前面的開發已經完成 Discord Bot 的行程新增、查詢、刪除與 Google Calendar 原生提醒功能,並建立了 111 項自動化測試。
雖然可以透過本機執行 npm test 驗證程式,但每次修改程式碼都需要手動執行測試,容易因為忘記檢查而忽略問題。
因此,Day 28 的目標是導入 GitHub Actions,建立 CI(Continuous Integration,持續整合)流程,讓程式碼 Push 到 GitHub 後,能自動安裝依賴套件並執行測試。
本次實作重點:
首先在 GitHub 建立新的 Private Repository,並將本機 Discord Bot 專案納入 Git 版本控制。
透過以下指令建立版本紀錄並上傳程式碼:
git init -b main
git add .
git commit -m "Initial commit"
git remote add origin https://github.com/ug696/discord-calendarBot.git
git push -u origin main
其中 git add 負責將檔案加入暫存區,git commit 建立本機版本紀錄,最後透過 git push 將程式碼上傳至 GitHub。
上傳前也確認 .gitignore 已排除 .env、OAuth 憑證、Token 及 node_modules 等不應提交的檔案。
接著使用專案中的 .github/workflows/test.yml 設定自動化工作流程。
name: Node.js Tests
on:
push:
branches: [main]
pull_request:
branches: [main]
workflow_dispatch:
permissions:
contents: read
jobs:
test:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v6
- name: Set up Node.js
uses: actions/setup-node@v7
with:
node-version: '26.4.0'
cache: npm
- name: Install dependencies
run: npm ci
- name: Run tests
run: npm test
這份設定主要包含以下功能:
push:當程式碼推送至 main 分支時,自動觸發測試pull_request:當 Pull Request 以 main 為目標分支時,執行測試workflow_dispatch:允許手動啟動工作流程runs-on:使用 GitHub 提供的 Ubuntu 執行環境actions/checkout:取得 Repository 中的程式碼actions/setup-node:設定 Node.js 執行環境npm ci:依照鎖定檔安裝專案依賴套件npm test:執行專案既有的自動化測試透過這個設定,就能在程式碼更新後,自動驗證原本已完成的功能是否符合測試預期。
完成 Repository 建立及 Workflow 設定後,將程式碼 Push 至 GitHub。
GitHub Actions 成功偵測 main 分支的更新,並自動啟動 Node.js Tests 工作流程。
執行過程包含:
進入 GitHub Repository 的 Actions 分頁後,可以查看每個步驟的執行狀態及詳細紀錄。
本次測試結果:

首次 Push 後,GitHub Actions 自動執行 Node.js 測試,111 項測試全部通過、0 項失敗,確認 CI 工作流程成功運作。
本次成功將原本只能在本機手動執行的測試,整合至 GitHub Actions。
透過 Git Push 觸發自動化工作流程,讓 GitHub 在獨立的執行環境中安裝套件並執行相同的測試。
測試結果顯示全部 111 項測試通過,確認 CI 設定能正常運作。
不過,CI 測試成功代表目前設定的自動化測試皆符合預期,並不代表已完成正式部署,或所有功能都經過真實 Discord 與 Google Calendar 環境驗證。
這次實作讓我更清楚理解 Git、GitHub 與 GitHub Actions 之間的關係。Git 負責管理本機程式碼的版本,GitHub 提供遠端程式碼儲存庫,而 GitHub Actions 則能在程式碼更新後,自動執行指定的工作流程。透過 CI 的建立,不需要每次修改程式碼都依賴手動執行完整測試,也能在後續開發中更早發現可能影響既有功能的問題。